package com.itheima.demo01_instanceof;

import java.util.Objects;

/**
 * 目标：JDK 15 的新特性模式匹配机制简化对象内容比较的代码写法
 * 重写 hashCode()和 equals() 方法比较对象那个的内容是否一样。
 */
public class InstanceofDemo04 {
    public static void main(String[] args) {
        Student s1 = new Student("黑马");
        Student s2 = new Student("黑马");
        System.out.println(s1.equals(s2));
    }
}

class Student {
    private String name;

    public Student(String name) {
        this.name = name;
    }

//    JDK 14 之前的 equals写法
//    @Override
//    public boolean equals(Object o) {
//        if (this == o) return true;
//        if (o == null || getClass() != o.getClass()) return false;
//        Student student = (Student) o;
//        return Objects.equals(name, ((Student) o).name);
//    }

    // JDK 14 之后的 instanceof 的模式匹配机制简化 equals代码的书写
    @Override
    public boolean equals(Object obj) {
        return obj instanceof Student s && Objects.equals(this.name, s.name);
    }

    @Override
    public int hashCode() {
        return Objects.hash(name);
    }
}
